热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

业界|成为CTO之前,我希望有人告诉我这些

如何成为一位合格的CTO,在成为CTO之前又需要哪些职业素养,即将离职的SketchDeckCTO讲述他在过去四年担任此职位的经验。这是一段刺激又美妙的

如何成为一位合格的CTO,在成为CTO之前又需要哪些职业素养,即将离职的 SketchDeck CTO讲述他在过去四年担任此职位的经验。

这是一段刺激又美妙的体验,在创业公司工作与传统的任职大不相同:一开始,你完全不知道公司是否会成功,也不知道它会不会变成一份全职工作,之后,随着公司的发展,你体验着新的各不相同的职位。总的来说,你会经常做着你曾经从未做过的工作。在你还未充分利用手中的权力之前,新的责任已经来到了你的面前。

0a98077aa080db4f460b6766c3d6dc85d1490d62

创业公司像大海中小船,能够灵活处理突发事件,但是你在第一天做出的决定会随着时间的推移不断往外产生涟漪。我现在知道的是,你选择的基础建设、框架结构和语言都将在未来的很长一段时间里伴你左右。

随着公司的成长,构建更多功能和子系统的重压会不断增大,每一个都将进一步锁住你的选择。伴随你获得更多动力的,是压力的持续增加,这时你再想停下来重新修改这些已经不可能了。

我对我们的选择非常满意:Amazon Web Services, Elastic Beanstalk, Firebase, AngularJS, Coffeescript, Kafka, Simple Queue System, SocketStream, Docker, SemaphoreCI, MySQL。列表中,仅有 AngularJS和MySQL在规模方面存在问题。我们的整个AngularJS代码包太大了,下载需要相当长的一段时间,应用程序也有点太慢了。随着BI查询复杂性的增加,(RDS中的)MySQL会崩溃并重新启动,这个问题很难解决。

众所周知,一项技术的生命周期惊人的短。CoffeeScript和AngularJS是已经过时的组件(我们计划迁移至TypeScript和最新的Angular)。当我们采用这些技术的时候,他们都相当的先进,真是庆幸,我对前沿科技的偏爱并没有引起任何严重的问题。我极其欣赏CoffeeScript ,因为其简洁的功能性语法,这些年里它极大地帮我大大提高了生产效率。

52493771ad9579981f830273602ee2a4b10d6283

基于以上,你得明白你需要准确计算预算时间,并为技术的更替制定策略。你在采用任何技术时都得接受长期的“技术债务”。

同样,你编写的组件和库将长期存在,不管你写得好不好,他们的状态一直都会这样——所以,为将来的维护人员着想,你最好多花一点时间在上面。

我们试图在我们所处理的代码领域进行小幅改进。有时,考虑到代码库的(总是不完美)的总体状态,可能会有压力,此时,我就会进行不断的小改进。

最后,是关于测试的简短说明:我发现让我们的团队编写测试代码真的很困难。我为我们系统中的很多部分都编写了测试用例,并配置好了测试服务器,在每次有代码提交的时候会自动运行。尽管如此,我很少看到其他人添加测试。我总是希望团队里能够重视测试,但是不尽如人意。以下是我解决这个问题的想法:

  • 开设有关如何编写测试的复习课程;

  • 要求重要功能包括至少一个测试;

  • 优化我们的测试服务器,使之在10秒钟内完成而不是10分钟(哎!),让程序员及时看到测试结果。

除了纯粹的技术决策之外,一名CTO还应兼顾人员管理。每天的大部分工作将是管理,领导,招聘和解雇人员。我不得不将学习这些贯穿始终。当然随着实践的进行,对这些流程会越来越熟练。

虽然员工是公司最宝贵的资产,但招聘员工的过程同样让人精疲力尽。相比收获了新入职的人,你可能需要花更多的时间来考虑雇用和拒绝更多的人。你可能需要更严格地过滤。我从未想到完美的创业团队成员是多么难得,也没想到会花如此多的时间和精力来寻找他们。

c1588872ff04adcc782f3dd5f07fb947dac7a14b

明确何时招人也是一个棘手的问题:是现在还是之后为这个职位招人?应该先为哪些职位招人?这些问题在你得到投资之后会尤其突出,因为你觉得你有义务让这些资金发挥最大价值。幸运的是,我们从Michael Siebel和YC那儿收获了一些具有帮助性的建议:

  • 当你感觉某个职位需求非常迫切的时候才开始招聘(比如快赶不上合同进度了的时候):

  • 招人是为了满足业务发展的需要,不能本末倒置(这条主要适用于还没有形成规模化的早期公司);

  • 不要招人来做一些你都还没想明白的事情(一些优秀的候选人也许能给公司带来新的动力,但通常的做法还是靠“有魔力”的创始人配置公司资源来适应新的发展)。

综上所述,如果你不确定是否需要为某个岗位招聘员工,可能做这个决定为时过早。我们也曾试图雇人来给公司实现我们自己也没有计划好的增长方案,但大部分时候都失败了。

员工管理一直相对比较顺利 —— 定期开诚布公的检查,明确什么是该做的,什么是不该做的,这些措施让我和我的员工保持着良好的关系。

管理人员一直相对比较顺利——与员工定期的、开诚布公的交流,这让我和同事们保持良好的关系。

8be77a92b673bd3e1391f34f97353a98aafc5cc9

我发现解雇员工是工作中很棘手的问题。你能从其他地方找到很多有用的建议,我在这儿简单地重申一下,早在你理性地决定和正式解雇一个人之前,你的直觉就已经做出判断了,但是解聘员工的这个过程非常痛苦。

良好的定期交流有助于双方接受最坏的结果。最后,基于一份个人发展计划,有一部分人真的能够应付自如,成为高效的团队成员;每个人都应该有这样的机会去展示自己。

伴随公司发展的一大乐趣就是看到一些优秀的人才在各自的领域能够独挡一面。在此,我要向我的整个团队致以诚挚的敬意和祝贺。


原文发布时间为:2018-03-21

本文作者:文摘菌

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”微信公众号



推荐阅读
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • QuestionThereareatotalofncoursesyouhavetotake,labeledfrom0ton-1.Somecoursesmayhaveprerequi ... [详细]
author-avatar
mobiledu2502900255
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有